/*
 * GWTServiceProvImpl.java
 *
 * Created on 8 de noviembre de 2009, 03:44 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package py.fpuna.ii.electiva2.server;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import py.fpuna.ii.electiva2.client.GWTServiceProv;
import py.fpuna.ii.electiva2.client.model.ProveedorModel;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import py.fpuna.ii.electiva2.dto.ProveedorDTO;
import py.fpuna.ii.electiva2.interfaces.ProveedorEAORemote;

/**
 *
 * @author Lauri
 */
public class GWTServiceProvImpl extends RemoteServiceServlet implements
        GWTServiceProv {
    
    public String guardarProveedor(ProveedorModel prov) {
        try {
            Context ctx = new InitialContext();
            ProveedorEAORemote provEaoR = (ProveedorEAORemote) ctx.lookup("java:comp/env/ProveedorEAOBean");

            ProveedorDTO provdto = new ProveedorDTO();
            provdto.setProvRazonSocial(prov.getProvRazonSocial());
            provdto.setProvDireccion(prov.getProvDireccion());
            provdto.setProvTelefono(prov.getProvTelefono());

            provEaoR.create(provdto);

            return "true";

        } catch (NamingException ex) {
            Logger.getLogger(GWTServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "false";
    }


    public List<ProveedorModel> listarProv(){
        List <ProveedorModel> responseList = new ArrayList<ProveedorModel>();

        try {

            Context ctx = new InitialContext();
            ProveedorEAORemote provEaoR = (ProveedorEAORemote) ctx.lookup("java:comp/env/ProveedorEAOBean");

            //trae la lista de proveedores de la BD
            List <ProveedorDTO> proveedorList = new ArrayList<ProveedorDTO>();

            proveedorList = provEaoR.findAll();           

            for (ProveedorDTO prov : proveedorList){
                ProveedorModel provMod = new ProveedorModel();
                provMod.setProvRazonSocial(prov.getProvRazonSocial());
                provMod.setProvDireccion(prov.getProvDireccion());
                provMod.setProvTelefono(prov.getProvTelefono());
                provMod.setProvCodigo(prov.getProvCodigo());

                responseList.add(provMod);
            }

            return responseList;

        } catch (NamingException ex) {
            Logger.getLogger(GWTServiceProvImpl.class.getName()).log(Level.SEVERE, null, ex);
        }

        return null;
    }


    public String eliminarProv(Integer provId){
         String res = "";
        try {
            Context ctx = new InitialContext();
            ProveedorEAORemote proveedorEaoR = (ProveedorEAORemote) ctx.lookup("java:comp/env/ProveedorEAOBean");

            ProveedorDTO provdto = proveedorEaoR.find(provId);
            proveedorEaoR.remove(provdto);
            res = "eliminado";
        } catch (NamingException ex) {
            Logger.getLogger(GWTServiceProvImpl.class.getName()).log(Level.SEVERE, null, ex);
        }

        return res;
    }


    public String modificarProv(Integer idProv, ProveedorModel prov){

        try {
            Context ctx = new InitialContext();
            ProveedorEAORemote proveedorEaoR = (ProveedorEAORemote) ctx.lookup("java:comp/env/ProveedorEAOBean");

            ProveedorDTO provdto = proveedorEaoR.find(idProv);
            
            provdto.setProvRazonSocial(prov.getProvRazonSocial());
            provdto.setProvDireccion(prov.getProvDireccion());
            provdto.setProvTelefono(prov.getProvTelefono());
            
            proveedorEaoR.edit(provdto);
            
            return "modificado";

        } catch (NamingException ex) {
            Logger.getLogger(GWTServiceProvImpl.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "no modificado";
    }

    /**
     * retorna la liste de proveedores segun su razon social
     * @param condicion
     * @return lista de proveedores por razon social
     */
    public List<ProveedorModel> listarProvEncontrados(String condicion) {
        List <ProveedorModel> responseList = new ArrayList<ProveedorModel>();

        try {

            Context ctx = new InitialContext();
            ProveedorEAORemote provEaoR = (ProveedorEAORemote) ctx.lookup("java:comp/env/ProveedorEAOBean");

            //trae la lista de proveedores de la BD
            List <ProveedorDTO> proveedorList = new ArrayList<ProveedorDTO>();

            proveedorList = provEaoR.getListaProv(condicion);

            for (ProveedorDTO prov : proveedorList){
                ProveedorModel provMod = new ProveedorModel();
                provMod.setProvRazonSocial(prov.getProvRazonSocial());
                provMod.setProvDireccion(prov.getProvDireccion());
                provMod.setProvTelefono(prov.getProvTelefono());
                provMod.setProvCodigo(prov.getProvCodigo());

                responseList.add(provMod);
            }

            return responseList;

        } catch (NamingException ex) {
            Logger.getLogger(GWTServiceProvImpl.class.getName()).log(Level.SEVERE, null, ex);
        }

        return null;
    }

   

}
